Electronic data is typically represented using a binary number system. The binary number system is one in which values may take on one of two states, typically represented by a “1” and a “0”. Various types of memory systems have been developed which include small programmable devices that store a single bit as either a “1” or a “0”. For example, a transistor may be used as a switch which is either in an ON state or an OFF state. The ON state may be used to represent a “1” while the OFF state may be used to represent a “0”.
One type of memory architecture is the crossbar memory architecture. The crossbar architecture includes two sets of interconnecting wire segments. A memory element is placed at each crosspoint between each wire segment. In one example, crossbar architecture may employ memristors as memory elements. A memristor is a device which is able to change the value of its resistance in response to various programming conditions. A memristor may represent a “1” while in a low resistance state and a “0” while in a high resistance state.
When resistance based memory elements such as memristors are placed in a crossbar architecture, it may be desirable to limit the number of memory elements in a low resistive state along a particular wire segment of the crossbar architecture. Having too many memory elements in a low resistive state along a particular wire segment may allow too much electric current to pass through. Too much electric current passing through the wire segments may potentially interfere with read/write operations and can also damage the wire segments and other components of the read/write circuitry.
The data stored on a memory array can be encoded so that the number of memory elements in a low resistive state along a particular wire segment is appropriately limited. However, during the process of rewriting the memory array, these weight constraints may be violated.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.